package it.storm.solution;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 830. 较大分组的位置
 * https://leetcode-cn.com/problems/positions-of-large-groups/
 */
public class Solutions_830 {
    public static void main(String[] args) {
//        String s = "abbxxxxzzy";  // output: {{3, 6}}
//        解释："xxxx" 是一个起始于 3 且终止于 6 的较大分组。

//        String s = "abc";  // output: {}
//        解释："a", "b" 和 "c" 均不是符合要求的较大分组。

//        String s = "abcdddeeeeaabbbcd";  // output: {{3, 5}, {6, 9}, {12, 14}}
//        解释：较大分组为 "ddd",  "eeee" 和 "bbb"

        String s = "aba";  // output: {}

        List<List<Integer>> result = largeGroupPositions(s);
        System.out.println(result);
    }

    public static List<List<Integer>> largeGroupPositions(String s) {
        List<List<Integer>> res = new ArrayList<>();
        if (s == null || s.length() < 3) {
            return res;
        }
        int len = s.length();
        int count = 1;
        char[] arr = s.toCharArray();
        for (int i = 1; i < len; i++) {
            if (arr[i] == arr[i - 1]) {
                count ++;
            } else {
                // 与前一字符不同，那么前一字符的连续数量为 count 个
                if (count >= 3) {
                    res.add(Arrays.asList(i - count, i - 1));
                }
                count = 1;
            }
        }
        // 处理末尾是连续字符的情况
        if (count >= 3) {
            res.add(Arrays.asList(len - count, len - 1));
        }
        return res;
    }
}
